import {router,addRoutes} from "~/router";
import { getToken} from "~/composables/auth"
import { 
    toast,
    showFullLoading,
    hideFullLoading
} from "~/composables/util"
import store from "./store";

//全局前置守卫
let hasGetInfo = false
router.beforeEach(async(to, from, next) => {
        ///显示loading
        showFullLoading()

   const token = getToken()
            //没有登陆 强制跳转登陆页
   if(!token && to.path != "/login"){
            toast("请先登录","error")
            return next({ path:"/login"})
   }

    //防止重复登录
    if(token &&  to.path == "/login" ){
        toast("请勿重复登录","error")
        return next({ path: from.path ? from.path : "/"})
    }
    //如果用户登录了 ，自动获取用户信息  并存储再vuex中
    let hasNewRoutes = false
    if(token&& !hasGetInfo){
       let {menus} =  await store.dispatch("getinfo")
       hasGetInfo = true
        //动态添加路由
        hasNewRoutes = addRoutes(menus)
    }
    //标题
    let title = (to.meta.title ? to.meta.title: "") +  "-帝莎后台管理"
    document.title = title
    hasNewRoutes ? next(to.fullPath) :next()
})
//全局后置钩子(消除loading)

router.afterEach((to, from) => {hideFullLoading()

  })